﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using N2.Details;
using Dinamico.Models;
using System.ComponentModel;

namespace Dinamico.Models
{
    [N2.PartDefinition("PartProductOfferAggregateGoogle",
     Description = "PartProductOfferAggregateGoogle",
     ToolTip = "PartProductOfferAggregateGoogle",
     SortOrder = 40,
     IconUrl = "~/upload/img/icons/product_group.png")]
    [N2.Integrity.AvailableZone("Oferty", "Offers")]
    public class PartProductOfferAggregateGoogleModel : ContentPart
    {
        //http://support.google.com/webmasters/bin/answer.py?hl=en&answer=146750
        [EditableText("Najniższa cena spośród wszystkich dostępnych ofert. Liczba zmiennoprzecinkowa.", 0)]
        public virtual string LowPrice { get; set; }
        [EditableText("Najwyższa cena spośród wszystkich dostępnych ofert. Liczba zmiennoprzecinkowa.", 1)]
        public virtual string HighPrice { get; set; }
        [EditableText("Waluta, w której podano cenę produktu, zapisana w trzyliterowym formacie ISO.", 2)]
        public virtual string Currency { get; set; }
        [EditableText("Liczba ofert dotyczących produktu.", 3)]
        public virtual string OfferCount { get; set; }

        #region Condition
        [EditableText("Możesz wpisać dowolny tekst, ale atrybut content musi mieć jedną z następujących rozpoznawanych wartości:new,used,refurbished,", 4)]
        public virtual string Condition { get; set; }
        [EditableText("Odpowiedni tekst dla:new,used,refurbished,", 5)]
        public virtual string ConditionText { get; set; }
        #endregion
 
        [EditableLink("URL strony internetowej produktu (zawierającej ofertę lub zagregowane oferty). (Nie używaj właściwości offerURL do zaznaczania treści na samej stronie produktu).", 6)]
        public virtual string OfferURL { get; set; }

        [EditableText("URL strony internetowej produktu Text.", 6)]
        public virtual string OfferURLText { get; set; }

        #region Identifier
        [EditableText("Identyfikator produktu. Google zaleca uwzględnienie właściwości brand i co najmniej jednej właściwości identifier przy każdym produkcie.", 255)]
        public virtual string Identifier { get; set; }
        [EditableText("Rozpoznawane są następujące typy:asin,isbn,mpn,sku,upc,", 255)]
        public virtual string IdentifierType { get; set; }

        //public enum IdentifierTypeEnum
        //{
        //    [DescriptionAttribute("asin")]
        //    asin = 0,
        //    [DescriptionAttribute("isbn")]
        //    isbn = 1,
        //    [DescriptionAttribute("mpn")]
        //    mpn = 2,
        //    [DescriptionAttribute("sku")]
        //    sku = 3,
        //    [DescriptionAttribute("upc")]
        //    upc = 4
        //}
        //[EditableEnum("Rozpoznawane są następujące typy:asin,isbn,mpn,sku,upc,", 50, typeof(IdentifierTypeEnum))]
        //public IdentifierTypeEnum IdentifierTypeEnumList
        //{
        //    get
        //    {
        //        return (IdentifierTypeEnum)(GetDetail("IdentifierTypeEnumList") ?? IdentifierTypeEnum.sku);
        //        //IList<ContentItem> datenBank = N2.Find.Items.Where.Type.Eq(typeof(RecipesContainerModel)).Select();
        //        //IList<string> categories
        //        //foreach (ContentItem item in datenBank)
        //        //{
        //        //    categories.Add(item.Title);
        //        //}
        //        //return categories;
        //        //return N2.Find.Items.Where.Type.Eq(typeof(RecipesContainerModel)).Select();
        //    }
        //    set
        //    {
        //        SetDetail("IdentifierTypeEnumList", value);
        //    }
        //}

        #endregion
        [EditableText("Sprzedawany przedmiot. Zazwyczaj element zawiera zagnieżdżony produkt, ale może również zawierać elementy innego typu lub tekst.", 255)]
        public virtual string ItemOffered { get; set; }

    }


}